package com.example.jingleai.config;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

// @Configuration 注解表示该类是一个配置类，用于配置应用程序的配置信息。
@Configuration
public class CommonConfiguration {// 公共配置

    @Bean
    public ChatMemory chatMemory() {
        return new InMemoryChatMemory();
    }

    /**
     * 配置客户端
     *
     * @param model 模型
     */
    @Bean
    public ChatClient chatClient(OllamaChatModel model, ChatMemory chatMemory) {
        // 创建 ChatClient 对象，并设置默认的系统提示语。
        return ChatClient.builder(model)
                .defaultSystem("你是一个热心、活泼的智能助手，你的名字叫迅迅，请以迅迅的身份和语气回答问题。")
                .defaultAdvisors(
                        // 添加一个 Advisor，用于记录聊天的日志。
                        new SimpleLoggerAdvisor(),
                        // 添加一个 Advisor，用于记录聊天的日志，并使用 ChatMemory 记录聊天记录。
                        new MessageChatMemoryAdvisor(chatMemory)
                )
                .build();
    }
}
